VBA তে ভেরিয়েবলসের Scope এবং Lifetime
VBA (Visual Basic for Applications) তে ভেরিয়েবলসের Scope এবং Lifetime খুবই গুরুত্বপূর্ণ ধারণা, কারণ এগুলি প্রোগ্রামিংয়ের মধ্যে ভেরিয়েবলের ব্যবহার এবং তাদের জীবনের সময়কাল নির্ধারণ করে। এর মাধ্যমে আপনি জানবেন যে কোন ভেরিয়েবলটি কোথায় অ্যাক্সেসযোগ্য এবং এটি কতক্ষণ জীবিত থাকবে।
Scope of Variables (ভেরিয়েবলসের স্কোপ)
Scope হল ভেরিয়েবলের অ্যাক্সেসযোগ্যতা নির্ধারণকারী ক্ষেত্র। অর্থাৎ, একটি ভেরিয়েবল কোথায় ব্যবহার করা যাবে এবং কোথায় এটি দৃশ্যমান থাকবে, তা নির্ধারণ করে।
ভেরিয়েবলসের স্কোপ সাধারণত ৩টি ধরনের হয়ে থাকে:
১. Procedure Scope (প্রসিজার স্কোপ)
- Procedure Scope ভেরিয়েবল শুধুমাত্র একটি সাবরুটিন (Sub) অথবা ফাংশন (Function)-এর মধ্যে ব্যবহৃত হতে পারে।
- এটি Local Variable নামে পরিচিত।
- প্রসিজার স্কোপের ভেরিয়েবল শুধুমাত্র সেই সাবরুটিন বা ফাংশনের ভিতরেই অ্যাক্সেসযোগ্য থাকে, বাহিরে নয়।
উদাহরণ:
Sub ExampleProcedure()
Dim localVar As Integer
localVar = 10
MsgBox localVar
End Subএখানে, localVar শুধুমাত্র ExampleProcedure সাবরুটিনের ভিতরেই ব্যবহৃত হতে পারে। অন্য কোথাও এটি অ্যাক্সেস করা যাবে না।
২. Module Scope (মডিউল স্কোপ)
- Module Scope ভেরিয়েবলগুলি একটি মডিউলের মধ্যে সব সাবরুটিন এবং ফাংশনের জন্য অ্যাক্সেসযোগ্য।
- এটি Private Variable নামে পরিচিত, যেটি শুধু ওই মডিউলের ভিতরেই ব্যবহার করা যেতে পারে, অন্য মডিউল থেকে নয়।
উদাহরণ:
Private myVar As Integer
Sub ProcedureOne()
myVar = 20
End Sub
Sub ProcedureTwo()
MsgBox myVar
End Subএখানে, myVar একটি মডিউল স্কোপ ভেরিয়েবল, যা একই মডিউলের মধ্যে সব সাবরুটিন এবং ফাংশনের মধ্যে ব্যবহারযোগ্য।
৩. Global Scope (গ্লোবাল স্কোপ)
- Global Scope ভেরিয়েবলগুলি প্রোগ্রামটির সব জায়গায়, অর্থাৎ সব মডিউল, সাবরুটিন এবং ফাংশনে অ্যাক্সেসযোগ্য।
- এটি Public Variable নামে পরিচিত।
- গ্লোবাল স্কোপে ডিক্লেয়ার করা ভেরিয়েবল প্রোগ্রামের যেকোনো জায়গা থেকে ব্যবহার করা যায়, যতক্ষণ না প্রোগ্রাম চালু থাকে।
উদাহরণ:
Public globalVar As Integer
Sub ProcedureOne()
globalVar = 30
End Sub
Sub ProcedureTwo()
MsgBox globalVar
End Subএখানে, globalVar গ্লোবাল স্কোপে ডিক্লেয়ার করা হয়েছে এবং এটি প্রোগ্রামের যেকোনো মডিউল বা সাবরুটিনে অ্যাক্সেসযোগ্য।
Lifetime of Variables (ভেরিয়েবলসের লাইফটাইম)
Lifetime হল একটি ভেরিয়েবল কবে থেকে কবে পর্যন্ত জীবিত থাকবে, অর্থাৎ কখন এটি মেমোরি থেকে মুছে যাবে।
১. Procedure Scope (প্রসিজার স্কোপ)
- Procedure Scope ভেরিয়েবলস শুধুমাত্র সাবরুটিন বা ফাংশনের ভিতরেই জীবিত থাকে।
- সাবরুটিন বা ফাংশন এক্সিকিউট করার সময় ভেরিয়েবলস মেমোরিতে তৈরি হয় এবং সাবরুটিন বা ফাংশন শেষ হলে তা মুছে যায়।
উদাহরণ:
Sub ExampleProcedure()
Dim localVar As Integer
localVar = 100
MsgBox localVar
End Subএখানে, localVar শুধুমাত্র ExampleProcedure সাবরুটিনের মধ্যে জীবিত থাকে এবং সাবরুটিন শেষ হলে এটি মুছে যায়।
২. Module Scope (মডিউল স্কোপ)
- Module Scope ভেরিয়েবলস সাধারণত মডিউল লেভেলে জীবিত থাকে, অর্থাৎ মডিউলের মধ্যে যে কোনো সাবরুটিন বা ফাংশন থেকে তা অ্যাক্সেসযোগ্য থাকে।
- মডিউল স্কোপ ভেরিয়েবলগুলি মডিউলটি ক্লোজ না হওয়া পর্যন্ত জীবিত থাকে।
উদাহরণ:
Private myVar As Integer
Sub ProcedureOne()
myVar = 50
End Sub
Sub ProcedureTwo()
MsgBox myVar
End Subএখানে, myVar মডিউল স্কোপে ডিক্লেয়ার করা হয়েছে এবং এই ভেরিয়েবলটি মডিউলটি বন্ধ না হওয়া পর্যন্ত জীবিত থাকবে।
৩. Global Scope (গ্লোবাল স্কোপ)
- Global Scope ভেরিয়েবলস প্রোগ্রামটি রান করা পর্যন্ত জীবিত থাকে। যখন প্রোগ্রাম বন্ধ হবে, তখন গ্লোবাল ভেরিয়েবলগুলি মুছে যাবে।
- এগুলি প্রোগ্রামের যেকোনো অংশ থেকে অ্যাক্সেস করা যায় এবং প্রোগ্রাম চলাকালীন পুরো সময়ের জন্য জীবিত থাকে।
উদাহরণ:
Public globalVar As Integer
Sub ProcedureOne()
globalVar = 10
End Sub
Sub ProcedureTwo()
MsgBox globalVar
End Subএখানে, globalVar গ্লোবাল স্কোপে ডিক্লেয়ার করা হয়েছে এবং এটি প্রোগ্রামটি বন্ধ না হওয়া পর্যন্ত জীবিত থাকবে।
Summary (সারসংক্ষেপ)
- Scope হল ভেরিয়েবলটির অ্যাক্সেসের সীমা, যেটি নির্ধারণ করে যে ভেরিয়েবলটি কোথায় ব্যবহার করা যাবে।
- Procedure Scope: শুধুমাত্র সাবরুটিন বা ফাংশনের ভিতর।
- Module Scope: মডিউলের ভিতরে।
- Global Scope: প্রোগ্রামটির সব জায়গায়।
- Lifetime হল ভেরিয়েবলটির অস্তিত্বের সময়কাল, যখন এটি মেমোরিতে তৈরি হয় এবং কখন মুছে যায়।
- Procedure Scope: সাবরুটিন বা ফাংশন এক্সিকিউট হওয়ার সময়।
- Module Scope: মডিউলটি বন্ধ না হওয়া পর্যন্ত।
- Global Scope: প্রোগ্রাম বন্ধ না হওয়া পর্যন্ত।
ভেরিয়েবলসের Scope এবং Lifetime বোঝার মাধ্যমে, আপনি কোডে ভেরিয়েবলগুলি আরও কার্যকরী এবং সঠিকভাবে ব্যবহার করতে পারবেন।
Read more